package com.wangwei.java_agant;

import java.lang.instrument.Instrumentation;

/**
 * Hello world!
 *
 */
public class MyAgent {
    
    
    private static Instrumentation instrumentation;
    /**
     * 该方法在main方法之前运行，与main方法运行在同一个JVM中 并被同一个System ClassLoader装载 被统一的安全策略(security
     * policy)和上下文(context)管理
     */
    public static void premain(String agentOps, Instrumentation inst) {
        System.out.println("=========premain方法执行========");
        System.out.println("我是参数"+agentOps);
        instrumentation = inst;

        System.out.println("=========dev========");
        System.out.println("=========dev========");
        System.out.println("=========dev========");
        System.out.println("=========dev========");
    }

    /**
     * 如果不存在 premain(String agentOps, Instrumentation inst) 则会执行 premain(String
     * agentOps)
     */
    public static void premain(String agentOps) {
        System.out.println("=========premain方法执行2========");
        System.out.println(agentOps);
        System.out.println("=========test========");
        System.out.println("=========test========");
    }
    
    public static long getObjectSize(Object o) {
        return instrumentation.getObjectSize(o);
    }



}
